Design Patterns: Open Closed Principle Explained Practically In C